package com.curso.session5;

import javax.swing.JOptionPane;

public class SumaArreglos {

	public static int[] Sumaarray(int[] param1, int[] param2) {

		if (param1.length == param2.length) {
			int[] sum = new int[param2.length];
			for (int i = 0; i < param2.length; i++) {
				sum[i] = param1[i] + param2[i];
			}
			return sum;

		} else {
			return null;
		}
	}
	
	
	public static void extremos(int[] param1) {

		int[] extremos = new int[param1.length/2 ];
		for (int i = 0; i < param1.length/2 ; i++) {
			extremos[i] = param1[0] + param1[3];
		} 
		SumaArreglos.prtArray(" ", extremos);
	}

	
	public static void medios(int[] param2) {

		int[] medios = new int[param2.length/2];
		for (int i = 0; i < param2.length/2 ; i++) {
			medios[i] = param2[1] + param2[2];
		}

		SumaArreglos.prtArray(" ", medios);
	} 
	
	
	public static void Sumaarray(int[] param1) {
		int suma = 0; 
		for (int i = 0; i < param1.length; i++) {
			suma += param1[i]; 
		}
		SumaArreglos.prtArraySolo("", param1);
		System.out.println("La suma de los valores del arreglo es: " + suma);
	}
	
	

	public static void prtArray(String mensaje, int[] arreglo) {

		for (int i = 0; i < arreglo.length; i++) {
			System.out.print(mensaje + " Posicion:" + i + " Valor: "+ arreglo[i]);
		}

	}

	public static void prtArraySolo(String mensaje, int[] arreglo) {

		for (int i = 0; i < arreglo.length; i++) {
			System.out.print(mensaje + arreglo[i]);
		}

	}

	public static void prtArraySolo(String mensaje, double[] arreglo) {

		for (int i = 0; i < arreglo.length; i++) {
			System.out.print(mensaje + arreglo[i]);
		}

	}

	public static int[] InvierteSentido(int[] Array1) {

		int[] sentido = new int[Array1.length];
		int contador = 0;

		for (int i = (sentido.length - 1); i >= 0; i--) {

			sentido[i] = Array1[contador];
			contador++;
		}
		return sentido;

	}

	public static void existeValor(String[] array1) {
		String validacion = "listo";

		if (array1[0].equalsIgnoreCase(validacion)
				|| array1[array1.length - 1].equalsIgnoreCase(validacion)) {
			System.out.println("OK");
		} else {
			System.out.println("MMMMM....");
		}

	}

	public static boolean existeValor(int[] array1, int[] array2, int[] array3) {

		boolean confirm = false;
		int a = array1[0];
		int b = array2[0];
		int c = array3[0];

		if (a == b && a == c) {
			confirm = true;
			return confirm;
		} else {

			return confirm;
		}

	}

	public static void comparaPrimerovsUltimo(double[] array1) {

		if (array1[0] == array1[array1.length - 1]) {
			System.out.println("Son Iguales valor 1: " + array1[0]+ " Ultimo valor : " + array1[array1.length - 1]);
			System.out.print("Arreglo = ");
			SumaArreglos.prtArraySolo(" || ", array1);
		} else {

			System.out.println("No son iguales: " + array1[0]
					+ " Ultimo valor : " + array1[array1.length - 1]);
			System.out.print("Arreglo = ");
			SumaArreglos.prtArraySolo(" || ", array1);
		}
	}

	public static void Pi(String pi) {

		char[] arreglo = new char[20];
		for (int i = 0; i < pi.length(); i++) {
			arreglo[i] = (char) pi.charAt(i);
			if (arreglo[i] == '\u0000') {
				arreglo[i] = 'x';
			}
			System.out.println("posicion: " + (i + 1) + " = " + arreglo[i]);
		}
	}

	
	
	public static void mayor (float [] array){
		float mayor = 0;
		int posicion = 1;
		for (int i = 0; i < array.length; i++) {
			if (mayor < array[i]){
				mayor = array[i]; 
			}
			posicion++;
		}
		System.out.println("el numero mayor es: " + mayor + " Ubicado en la pocision: " + posicion);
		
		
	}
	
	
	public static void evaluador (int[] param){
		boolean cinco = false;
		boolean uno = false;
		boolean siete = false;
		boolean ocho = false;
		boolean cero = false;
		boolean dos = false;
		
		for (int i = 0; i < param.length; i++) {
			if (param[i] == 5 ){
				cinco = true; 	
			}
			if (param[i] ==1){
				uno = true;
			}
			if (param[i] ==1){
				siete = true;
			}
			if (param[i] ==1){
				ocho = true;
			}
			if (param[i] ==1){
				cero = true;
			}
			if (param[i] ==1){
				dos = true;
			}

		}   if (cinco && uno){
				System.out.println("  OK  ");
			}
			if (siete || ocho){
				System.out.println("   OK2   ");
			}
			if (cero && (dos==false) ){
				System.out.println("   MMMMM...  ");
				
			}

	}
	
	
	public static int[] numPrimos(int cantidad){
		
		int[] misPrimos = new int[cantidad];
		int cuentaPrimos = 0;
		int secuencia = 1;
		while (cuentaPrimos < cantidad) {
			if (esPrimo(secuencia)) {
				misPrimos[cuentaPrimos] = secuencia;
				cuentaPrimos++;
			}
			secuencia++;
		}

		return misPrimos;
	}
	
	public static boolean esPrimo(int numero){
		if (numero == 1) {
			return false;
		}
		int contador = 2;
		boolean primo = true;
		while ((primo) && (contador != numero)) {
			if (numero % contador == 0) {
				primo = false;
			}
			contador++;
		}
		return primo;
	}
	

	public static void main(String[] args) {

		
		int a = 1;
		while (a == 1) {
			int opcion = Integer.parseInt(JOptionPane.showInputDialog("Ingrese la opcion: "));
			switch (opcion) {
			case 1:

				int[] valA = new int[4];
				int[] valB = new int[4];
				for (int i = 0; i < valB.length; i++) {
					try {
						valA[i] = Integer.parseInt(JOptionPane.showInputDialog("Ingrese un valor para el arreglo A pocision: "+ i));
						valB[i] = Integer.parseInt(JOptionPane.showInputDialog("Ingrese un valor para el arreglo B pocision: "+ i));
					} catch (Exception e) {
						System.out.println("Surgio un error");
					}
				}

				SumaArreglos.prtArray(" Arreglo1: ", valA);
				SumaArreglos.prtArray(" Arreglo2: ", valB);
				SumaArreglos.prtArray(" Suma: ",
						SumaArreglos.Sumaarray(valA, valB));

				break;

			case 2:
				int[] valC = new int[4];
				for (int i = 0; i < valC.length; i++) {
					try {
						valC[i] = Integer.parseInt(JOptionPane.showInputDialog("Ingrese un valor para el arreglo B pocision: "+ i));
					} catch (Exception e) {
						System.out.println("Surgio un error");
					}
				}
				SumaArreglos.prtArraySolo("  ",
						SumaArreglos.InvierteSentido(valC));

				break;

			case 3:
				String[] texto = new String[4];
				for (int i = 0; i < texto.length; i++) {
					texto[i] = JOptionPane
							.showInputDialog("Ingrese un texto para la posicion "
									+ (i + 1) + " : ");
				}
				SumaArreglos.existeValor(texto);

				break;

			case 4:

				double[] Valor = new double[3];

				for (int i = 0; i < Valor.length; i++) {
					Valor[i] = Double
							.parseDouble(JOptionPane
									.showInputDialog("Ingrese un texto para la posicion "
											+ (i + 1) + " : "));
				}
				SumaArreglos.comparaPrimerovsUltimo(Valor);

				break;

			case 5:

				String pi = Double.toString(Math.PI);
				Pi(pi);

				break;

			case 6:
				
				int b = 1;
				while (b == 1) {
					int dimension1 = 0, dimension2 = 0, dimension3 = 0;

					dimension1 = Integer.parseInt(JOptionPane.showInputDialog("Ingrese la dimencion del arreglo 1 "));
					int[] array1 = new int[dimension1];
					System.out.println("Arreglo 1");
					for (int i = 0; i < array1.length; i++) {
						array1[i] = Integer.parseInt(JOptionPane.showInputDialog("Ingrese valor para la posicion "+ (i + 1) + " : "));
					}

					dimension2 = Integer
							.parseInt(JOptionPane
									.showInputDialog("Ingrese la dimencion del arreglo 2 "));
					int[] array2 = new int[dimension2];
					System.out.println("Arreglo 2");
					for (int i = 0; i < array2.length; i++) {
						array2[i] = Integer
								.parseInt(JOptionPane
										.showInputDialog("Ingrese valor para la posicion "
												+ (i + 1) + " : "));
					}

					dimension3 = Integer
							.parseInt(JOptionPane
									.showInputDialog("Ingrese la dimencion del arreglo 3 "));
					int[] array3 = new int[dimension3];
					System.out.println("Arreglo 3");
					for (int i = 0; i < array3.length; i++) {
						array3[i] = Integer
								.parseInt(JOptionPane
										.showInputDialog("Ingrese valor para la posicion "
												+ (i + 1) + " : "));
					}

					System.out.print("Arreglo1 = ");
					SumaArreglos.prtArraySolo("", array1);
					System.out.println("");

					System.out.print("Arreglo2 = ");
					SumaArreglos.prtArraySolo("", array2);
					System.out.println("");

					System.out.print("Arreglo3 = ");
					SumaArreglos.prtArraySolo("", array3);
					System.out.println("");

					if (SumaArreglos.existeValor(array1, array2, array3)) {
						System.out.println("OK");

						b++;
					} else {
						System.out.println("MMMMMMMM................");
						b++;
					}
				}
				break;

				
			case 7 : 

				int cant = Integer.parseInt(JOptionPane.showInputDialog("Cuantos valores desea sumar: "));
				int[] sumatotalarray = new int[cant];

				for (int i = 0; i < sumatotalarray.length; i++) {
					sumatotalarray[i] = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el valor numero: " + (i + 1)));
				}
				
				SumaArreglos.Sumaarray(sumatotalarray);

				break;
				
			case 8 :
				
			cant = Integer.parseInt(JOptionPane.showInputDialog("Cuantos valores desea sumar: "));
				
				float [] mayorMenor = new float[cant];
				for (int i = 0; i < mayorMenor.length; i++) {
					mayorMenor[i] = Float.parseFloat(JOptionPane.showInputDialog("Ingrese el valor numero: " + (i + 1)));
				}
				
				SumaArreglos.mayor(mayorMenor);
				
			case 9: 
				
				int[] array9 = new int[4];
				for (int i = 0; i < array9.length; i++) {
					array9[i] = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el valor numero: " + (i + 1)));
				}
				System.out.println("Extremos: ");
				SumaArreglos.extremos(array9);
				System.out.println("medios: ");
				SumaArreglos.medios(array9);
				break ;
				
			case 10:
				int[] array8 = new int[5];
				for (int i = 0; i < array8.length; i++) {
					array8[i] = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el valor numero: " + (i + 1)));
				}
				
				SumaArreglos.evaluador(array8);
				
			case 11: 
				
				int num = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el numero de primos: "));
				SumaArreglos.prtArraySolo(" ", SumaArreglos.numPrimos(num));
				
				
			default:
				


			}
		}

	}

}
